

/*
{3, , 5, , 6,  , 7}
如果要删除 2，把所有的 2 往数组末尾放，把所有其他值往前放
                     R
{3, 5, 6, 7, 6, 2, 7}
             W

R = 0
nums[R] != 2 -> nums[W] = nums[R] -> R + 1 W + 1

R = 1
W 不变 R 往后挪

R = 2 nums[W] = nums[R]

*/

/*
有一条绳子：
* 不对折绳子，直接中间剪一刀，会得到 2 条绳子；
* 对折一次，中间剪一刀，会得到 3 条绳子；
* 对折两次，中间剪一刀，会得到 5 条绳子；
* 对折三次，中间剪一刀，会得到 9 条绳子；
*
编写一个函数，计算对折 m 次之后，中间剪一刀，会得到多少条绳子。

要求
分别用普通的计算方法和递归的计算方法来完成这个问题。

递归思想有两个要素：
1. 初始条件：不需要计算就有的结果，对折一次/不对折
2. 递归公式：从前一次得到这一次的规律
*/

/*
输入一个整数 N
计算 1 ～ N 之间所有合数的和。
*/

/*
编写一个函数，让他接受一个 N x N 的二维整数数组作为参数，
打印它的主对角线（从左上到右下的对角线）
*/

/*
编写一个函数，让他接受一个已经排序好的整数数组作为参数。
返回一个新的数组，新数组的每个元素，是原来数组的平方，并且，也是排序的。
*/


/*
             R
{-3, -2, -1, 0, 1, 2}
                L

result
{0, 1, 1, 4, 4, 9}
                <-
*/